﻿using System;
using System.Data;
using System.Data.SqlClient;
using Microsoft.ApplicationBlocks.Data;

namespace Z16.BLI
{
    public class CentroDeCusto
    {
        #region "Variaveis"

        public string StrNomeCentroDeCusto { get; set; }

        public string StrCodUsuario { get; set; }

        #endregion


        #region "Metodos"

        public static string SalvarCentroDeCusto(string strNomeCentroDeCusto,string strCodUsuario, int? codCC)
        {
            try
            {
                SqlParameter[] pms =
                    {
                        new SqlParameter("@NOMECENTRODECUSTO", strNomeCentroDeCusto),
                        new SqlParameter("@CODUSUARIO",strCodUsuario),
                        new SqlParameter("@CODCC",codCC),
                    };

                if (codCC == null)
                {
                    SqlHelper.ExecuteNonQuery(SqlHelper.GetSQLConnection(), CommandType.StoredProcedure, "procIncCentroDeCusto", pms);

                    return "0;Centro de Custo adicionado com sucesso!";
                }
                else
                {
                    SqlHelper.ExecuteNonQuery(SqlHelper.GetSQLConnection(), CommandType.StoredProcedure, "procEditCentroDeCusto", pms);

                    return "0;Centro de Custo editado com sucesso!";
                }
            }
            catch (Exception ex)
            {
                return "1;Erro ao inserir Centro de Custo: " + ex.Message;
            }
        }

        public DataTable CarregarResponsaveis()
        {
            SqlDataReader retorno = SqlHelper.ExecuteReader(SqlHelper.GetSQLConnection(), CommandType.StoredProcedure, "procSelResponsaveisCentroDeCusto");

            DataTable cc = new DataTable();
            cc.Load(retorno);

            return cc;
        }

        public DataTable ListarCentroDeCusto(int? codCC, string centroDeCusto)
        {
            DataTable cc = new DataTable();

            SqlParameter[] pms =
                    {
                        new SqlParameter("@codCC",codCC),
                        new SqlParameter("@CentroDeCusto",centroDeCusto)
                    };

            try
            {
                SqlDataReader retorno = SqlHelper.ExecuteReader(SqlHelper.GetSQLConnection(), CommandType.StoredProcedure, "procSelCentroDeCusto", pms);


                cc.Load(retorno);
            }
            catch (Exception ex)
            {
                throw;
            }
            return cc;
        }

        public int ExcluirCentroDeCusto(int codigo)
        {
            SqlConnection conn = new SqlConnection(SqlHelper.GetSQLConnection());
            conn.Open();
            SqlCommand dCmd = new SqlCommand("DeletarCentroDeCusto", conn);
            dCmd.CommandType = CommandType.StoredProcedure;
            try
            {
                dCmd.Parameters.AddWithValue("@codigo", codigo);
                return dCmd.ExecuteNonQuery();
            }
            catch
            {
                throw;
            }
            finally
            {
                dCmd.Dispose();
                conn.Close();
                conn.Dispose();
            }
        }

        public DataTable ListarCentroCustoAtivo()
        {
            DataTable cc = new DataTable();
            try
            {
                SqlDataReader retorno = SqlHelper.ExecuteReader(SqlHelper.GetSQLConnection(), CommandType.StoredProcedure, "procSelCentroCustoAtivo");

                cc.Load(retorno);
            }
            catch (Exception ex)
            {
                throw;
            }
            return cc;
        }

        public DataTable ListarCentroDeCustoID(int? codCentroCusto)
        {
            DataTable cc = new DataTable();
            try
            {
                SqlParameter pms = new SqlParameter("@CODCC", codCentroCusto);

                SqlDataReader retorno = SqlHelper.ExecuteReader(SqlHelper.GetSQLConnection(), CommandType.StoredProcedure, "procSelCCRet", pms);

                cc.Load(retorno);
            }
            catch (Exception ex)
            {
                throw;
            }
            return cc;
        }

        public DataTable TotalHorasCentroDeCusto(string dtIni, string dtFin)
        {
            DataTable cc = new DataTable();
            try
            {
                SqlParameter[] pms =
                    {
                        new SqlParameter("@DTINI", dtIni),
                        new SqlParameter("@DTFIN", dtFin)
                    };

                SqlDataReader retorno = SqlHelper.ExecuteReader(SqlHelper.GetSQLConnection(), CommandType.StoredProcedure, "procSelTotalHorasCC", pms);

                cc.Load(retorno);
            }
            catch (Exception ex)
            {
                throw;
            }
            return cc;
        }

        public DataTable HorasCentroDeCustoId(int codCC, int totalHorasUser, string dtIni, string dtFin)
        {
            DataTable cc = new DataTable();
            try
            {
                SqlParameter[] pms =
                    {
                        new SqlParameter("@CODCC", codCC),
                        new SqlParameter("@TOTALHORAS", totalHorasUser),
                        new SqlParameter("@DTINI", dtIni),
                        new SqlParameter("@DTFIN", dtFin)
                    };

                SqlDataReader retorno = SqlHelper.ExecuteReader(SqlHelper.GetSQLConnection(), CommandType.StoredProcedure, "procSelHorasPorcentCC", pms);

                cc.Load(retorno);
            }
            catch (Exception ex)
            {
                throw;
            }
            return cc;
        }

        #endregion
    }
}